import java.util.Arrays;

public class J101003 {
    public static class MyArraylist {

        public int[] elem;
        public int usedSize;//0
        //默认容量
        private static final int DEFAULT_SIZE = 10;

        int fullSize = DEFAULT_SIZE;

        public MyArraylist() {
            this.elem = new int[DEFAULT_SIZE];
        }
        /**
         * 打印顺序表:
         * 根据usedSize判断即可
         */
        public void display() {
            System.out.print("[");
            for(int i = 0; i < usedSize; i++){
                System.out.print(elem[i]);
                if(i != usedSize - 1){
                    System.out.print(",");
                }
            }
            System.out.println("]");
        }

        // 新增元素,默认在数组最后新增
        public void add(int data) {
            if(isFull()){
                elem = Arrays.copyOf(elem, fullSize *= 2);
            }
            elem[usedSize++] = data;
        }

        /**
         * 判断当前的顺序表是不是满的！
         *
         * @return true:满   false代表空
         */
        public boolean isFull() {
            return usedSize == fullSize;
        }


        private boolean checkPosInAdd (int pos){
            return (pos >= 0 && pos < usedSize);
        }

        // 在 pos 位置新增元素
        public void add(int pos, int data) {
            if(checkPosInAdd(pos)){
                if(isFull()){
                    elem = Arrays.copyOf(elem, fullSize *= 2);
                }
                int cur = usedSize++;
                while(cur > pos){
                    elem[cur] = elem[cur - 1];
                    cur--;
                }
                elem[cur] = data;
            }
        }

        // 判定是否包含某个元素
        public boolean contains(int toFind) {
            for(int i : elem){
                if(i == toFind){
                    return true;
                }
            }
            return false;
        }

        // 查找某个元素对应的位置
        public int indexOf(int toFind) {
            for(int i = 0; i < usedSize; i++){
                if(elem[i] == toFind){
                    return i;
                }
            }
            return -1;
        }

        // 获取 pos 位置的元素
        public int get(int pos) {
            if(checkPosInAdd(pos)){
                return elem[pos];
            }
            return Integer.MIN_VALUE;
        }

        private boolean isEmpty() {
            return usedSize == 0;
        }

        // 给 pos 位置的元素设为【更新为】 value
        public void set(int pos, int value) {
            if(checkPosInAdd(pos)){
                elem[pos] = value;
            }
        }

        //      删除第一次出现的关键字key
        public void remove(int key) {
            if(contains(key)){
                int i = indexOf(key);
                while(i < usedSize - 1){
                    elem[i] = elem[i + 1];
                    i++;
                }
                usedSize--;
            }
        }

        // 获取顺序表长度
        public int size() {
            return usedSize;
        }

        // 清空顺序表
        public void clear() {
            usedSize = 0;
            elem = null;
        }
    }

    public static void main(String[] args) {
        MyArraylist list = new MyArraylist();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        list.add(8);
        list.add(9);
        list.add(10);
        list.set(9,11);
        list.clear();
        System.out.println(list.size());
        list.display();
    }
}
